package manage;

import login.Order;
import login.User;

import login.vegetableList;

import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class customerSys extends Admin{
    /*
    显示并选择商家用户返回id-----------------点餐系统
     */
    //Admin u = new Admin();
    public int f=1;
    public String printSlr()
    {
        if(findSlr()==null) {
            System.out.println("没有任何店铺开业！");
            f=0;
            return null;
        }
        else{
            List<User>slr=new ArrayList<>();
            slr=findSlr();
            for(User user:slr){
                System.out.println(user);
            }
            System.out.println("请输入进去的店id");
            String tid=sc.next();
            return tid;
        }

    }
    /**
     * 显示所有菜品(按菜品销量从高到低排序输出)
     */
    public void showAllDishesByUser() {
        String tid=printSlr();
        List<vegetableList> list = d.findBySlr(tid);
        if(list==null){
            System.out.println("该商家下没有菜品");
            f=0;
        }
        else {
            Collections.sort(list, (p1, p2) -> p1.getdSum() - p2.getdSum());//按照销量来排序
            List<vegetableList>vlist=new ArrayList<>();

            vlist=list;
            for(vegetableList v:vlist)
            {
                System.out.println(v);
            }
        }
    }
    //
    /**
     * 点餐（输入菜品id和购买数量）
     */
    public void shopDishes(User user) {
        f=1;
        showAllDishesByUser();
        if(f>0) {//特判一下会不会没有店铺
            System.out.println("请输入您要购买的id和数量：按照(id/数量)");
            String str = sc.next();
            String[] info = str.split("/");
            // 判断输入是否符合要求，不符合则要求重新输入
            if (info.length < 2||d.findByID(info[0])==null) {
                System.out.println("输入有误，请重新输入：");
                shopDishes(user);
            } else {
                if (d.findByID(info[0]) != null) {
                    //拥有的钱比他多并且需求数量多
                    if (user.money >= d.findByID(info[0]).getdPrice()*Integer.parseInt(info[1])&&Integer.parseInt(info[1])>d.findByID(info[0]).getdNum()) {
                        LocalTime l = LocalTime.now();
                        // String orderID, LocalDateTime utime, Dishes dishes, int ordernum, String uID,
                        // Double orderprice,int orderValue
                        //id time dish num prise ctm slr status

                        //计算总价
                        Double tolprice = Integer.parseInt(info[1]) * d.findByID(info[0]).getdPrice();


                        Order t = new Order(info[0], l, d.findByID(info[0]), d.findByID(info[0]).getdNum(), Integer.parseInt(info[1]) * 1.0, user, d.findByID(info[0]).getCook(), o.findByID(info[0]).getStatus());
                        t.setoNumber(Integer.parseInt(info[1]));


                        //选择是否使用优惠券
                        //先初始化优惠券变成菜品折扣
                        o.findByID(info[0]).setDiscount(user.youhuiquan);

                        System.out.println("请选择是否使用" + o.findByID(info[0]).getDiscount() + "元 优惠券 (1.使用  2.不使用)");
                        int pd = sc.nextInt();
                        if (pd == 1) {
                            tolprice -= o.findByID(info[0]).getDiscount();
                            o.findByID(info[0]).setTolPrice(tolprice);
                        }

                        //加入订单
                        user.money = user.money - tolprice;

                        o.findByID(info[0]).setStatus("已支付");
                        o.insert(t);
                        System.out.println("订单已生成！！！");
                        System.out.println((o.findByID(info[0])));
                        //添加菜品销量,重写设定函数
                        d.findByID(info[0]).setdNum(Integer.parseInt(info[1]));
                    } else if(user.money < d.findByID(info[0]).getdPrice()*Integer.parseInt(info[1])){

                        System.out.println("余额不足请充值！");

                    }
                    else {
                        System.out.println("商品数量不够喔！");
                    }
                }
            }
        }
    }

    /*
    充值系统
     */
    public void addMoney(String uid)
    {
        System.out.println("您的余额为："+findByID(uid).getMoney());
        System.out.println("请选择是否充值：0否 1是");
        int f=sc.nextInt();
        if(f>0){
            System.out.println("请输入充值的金额：");
            String str=sc.next();
            Double base=findByID(uid).money;
            findByID(uid).setMoney(base+Double.parseDouble(str));
            System.out.println("充值成功！");
        }

    }

    //查看订单状态（通过用户查找需要的订单）
    public void showOrder(String uid)
    {
        //打印商品信息
        System.out.println(o.findByCtm(uid));

    }

    //查看该商家的所有评价
    public void showRemark(String uid)
    {
        showOrder(uid);
        System.out.println("请输入您要查看的商家id获取全部评价");
        String Uid=sc.next();
        System.out.println(findByID(Uid).getRemarks());

    }

    //给商家评价
    public void setRemark(String uid)
    {
        showOrder(uid);
        System.out.println("请输入您要评价的商家");
        String sid=sc.next();
        if(findByID(sid)!=null){
            System.out.println("请输入您对该商家的评价");

            findByID(sid).setRemarks(sc.next());
        }
        else {
            System.out.println("没有此商家喔！");
        }


    }



}
